package persistencia;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import negocio.DisponibilidadInstructor;
import negocio.Usuario;

public class DisponibilidadInstructorDAO {

	private Connection c;
	private static DisponibilidadInstructorDAO instancia;
	
	private DisponibilidadInstructorDAO()
	{
		c = BDManager.getInstance().getConexion();
	}
	
	public static DisponibilidadInstructorDAO  getInstance()
	{
		if(instancia == null)
			instancia = new DisponibilidadInstructorDAO();
		return instancia;
	}
	
	public void guardar (DisponibilidadInstructor disponibilidad)
	{
		String query = "select merge_disponibilidad('" + disponibilidad.getInstructor().getDni() + "','" + disponibilidad.getDiaSemana() + "','" +
				disponibilidad.getHoraInicio()+ "','"+disponibilidad.getHoraFin()+"');";
		try {
			Statement s = c.createStatement();
			s.execute(query);
			s.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	public DisponibilidadInstructor getDisponibilidadInstructor(int id)
	{
		String query = "SELECT * FROM disponibilidadinstructor WHERE id="+id;
		Statement s;
		ResultSet rs;
		DisponibilidadInstructor res = null;
		try{
			s = c.createStatement();
			rs = s.executeQuery(query);
			if(rs.next())
			{
			Usuario instructor= UsuarioDAO.getInstance().getUsuario(rs.getString("instructor"));
			res = new DisponibilidadInstructor(id, instructor, rs.getString("diasemana"), rs.getTime("horainicio"), rs.getTime("horafin"));
			}
			s.close();			
		}
		catch(SQLException e)
		{
			e.printStackTrace();
		}
		return res;
	}
	
	public ArrayList<DisponibilidadInstructor> getAllDisponibilidadPorInstructor(Usuario instructor)
	{
		String query = "select * from disponibilidadinstructor where instructor='"+instructor.getDni()+"'";
		Statement s;
		ResultSet rs;
		ArrayList<DisponibilidadInstructor> res = new ArrayList<DisponibilidadInstructor>();
		try {
			s = c.createStatement();
			rs = s.executeQuery(query);
			while(rs.next())
			{
				Usuario instructor1= UsuarioDAO.getInstance().getUsuario(rs.getString("instructor"));
				res.add(new DisponibilidadInstructor(rs.getInt("id"), instructor1, rs.getString("diasemana"), rs.getTime("horainicio"), rs.getTime("horafin")));
			}
			s.close();
		} catch (SQLException e) 
		{
			e.printStackTrace();
		}
		return res;
	}


	public void borrar(Usuario instructor, String dia) {
		String query = "delete from disponibilidadinstructor WHERE instructor='" + instructor.getDni() + "' and diasemana='"+dia+"';";
		try {
			Statement s = c.createStatement();
			s.execute(query);
			s.close();
		} 
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		
	}

}
